<html>
<head>
<title>POJava</title>
<LINK REL="stylesheet" HREF="/style/pojava.css" TYPE="text/css" MEDIA="screen" />
<body>
<img src="img/pojava7.png" />
<h3>What is POJava?</h3>
<p>POJava is a set of small light-weight Java libraries addressing common business-oriented
software development needs.  Each of the currently three libraries is designed with some
guiding principles in mind:  Keep it small and simple.  Avoid unnecessary dependencies.
</p><p>
POJava gets its name from "Plain Old Java".  Like "Plain Old Telephone Service" or "Plain
Old XML", it's pretty basic stuff.  Here's how it's organized.
<table class="grid">
<tr>
  <th>POJava Utility</th>
  <td>This base jar provides common functions for string and binary conversions,
such as compression, encryption, and encoding.  It also includes tools for accessing,
validating, and altering data using reflection, external process invocation, and language
binding.  It currently also supports the DateTime package, which is being spun off into
its own project POJava DateTime.
</td>
</tr><tr>
  <th>POJava DateTime</th>
  <td>The DateTime library provides an immutable object, "DateTime", intended to improve upon
  Java's native Date, Timestamp, Calendar, and SimpleDateFormat classes.  DateTime's
  most prominent feature is its ability to parse dates and times from a wide variety of
  formats and languages.  DateTime is a business-oriented library, intentionally very small, but
  easily supporting time zone conversions, American or European ordering of month and day, 
  ISO8601 dates, relative dates and date-based math.  It also provides integrated formatting
  with built-in extensions such as a choice of fractional seconds to any length rather than
  just milliseconds, and a choice of BC/AD vs. BCE/CE to describe eras. 
  </td>
</tr>
<tr>
  <th>POJava Persistence</th>
  <td>This library provides database-to-object (ORM) and object-to-xml conversions in both
  directions.  It depends only on POJava, so it also has a very small footprint.
  </td>
</tr>
</table>

<h2>What's new and cool in POJava?</h2>
<p>POJava's DateTime class was recently moved into its own library.  This will keep it focused on
one well-defined task, supporting business use of Date and Time.  Keeping it separate
helps ensure that it stays small in the future (under 32K with no dependencies!) and keeps
it safely away from concerns such as whether encryption is supported and in what countries.
</p>
<h2>Generated Documentation</h2>
<table>
<tr>
<td><a href="/site/pojava-2.8.0/">POJava 2.8.0</a> <a href="/site/pojava-2.8.0/apidocs/">JavaDocs</a></td>
<td>POJava provides utilities for managing data using simple POJOs (Plain Old Java Objects).</td>
</tr>
<tr>
<td><a href="/site/pojava-persistence-2.6.0/">Persistence 2.6.0</a> <a href="/site/pojava-persistence-2.6.0/apidocs/">JavaDocs</a></td>
<td>POJava Persistence provides a persistence layer for Object Relational Mapping between Java
and a wide array of database platforms.  It also provides Object to XML serialization and
deserialization to simplify the conversion of your objects into a portable form.</td>
</tr>
</table>
<h2>Hand-written Documentation</h2>
<h3>How to use POJava DateTime...</h3>
<table>
<tr>
  <td><a href="/howto/datetime.html">Date and Time</a>
  <td>Easily parse freeform text Date and Time in multiple languages and formats.</td>
</tr><tr>
  <td><a href="/howto/format.html">Format Date and Time Output</a>
  <td>Output DateTime values using your own custom formats.</td>
</tr>

</table>
<h3>How to use POJava Utilities...</h3>
<table>
<tr>
  <td><a href="/howto/compression.html">Compression</a></td>
  <td>Use Zip compression to fit more into the same space.</td>
</tr><tr>
  <td><a href="/howto/encoding.html">Number Base Encoding</a>
  <td>Base-64 or Hex-encode your binary data for document portability.</td>
</tr><tr>
  <td><a href="/howto/jndiregistry.html">Unit testing with JNDI</a>
  <td>Use JNDIRegistry to populate a test-friendly InitialContext.</td>
</tr><tr>
  <td><a href="/howto/process.html">Running External Programs</a>
  <td>Use the ProcessTool to more safely execute external programs, capturing both 
  stdout and stderr in separate threads.</td>
</tr><tr>
  <td><a href="/howto/encryption.html">Encryption</a>
  <td>Encrypt and decrypt your data using AES encryption and simple key management.</td>
</tr>
</table>
<table>
<h3>How to use POJava Persistence for...</h3>
<tr>
  <td><a href="/howto/xmlserializer.html">XML Serialization</a>
  <td>Stream your Objects to XML.  Retrieve and rehydrate them back into Objects, preserving
complex circular references.</td>
</tr><tr>
  <td><a href="/howto/dao.html">Object Relational Mapping</a>
  <td>Make your Data Access Objects simple, secure and speedy.</td>
</tr>
</table>
</body>
</html>
